package yang.anno;

import lombok.extern.slf4j.Slf4j;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

/**
 * @Description: 测试类
 * @author: Yang Qiang
 * @create: 2021-10-24 15:07
 */
@Slf4j
public class Test {
	public static void main(String[] args) throws NoSuchMethodException {
		// 判断类上是否有指定注解
		Class clazz = AnnoTest.class;
		// 运行的时候判断AnnoTest类上是否有@Yang(和注解的声明周期有关)
		if (clazz.isAnnotationPresent(Yang.class)){
			// 获取类上面的注解及属性
			Yang yang = (Yang) clazz.getAnnotation(Yang.class);
			String value = yang.value();
			int age = yang.age();
			log.debug("value={}, age={}", value, age);

		}

		// 获取类方法上的注解
		Method print = clazz.getDeclaredMethod("print");
		if (print.isAnnotationPresent(Yang.class)) {
			Yang annotation = print.getAnnotation(Yang.class);
			String value = annotation.value();
			int age = annotation.age();
			log.debug("value={}, age={}", value, age);
		}
	}
}
